#include <QCoreApplication>
#include<QDir>
#include<QDebug>
#include<QStringList>
#include<QFile>
uint64_t getDirSize(QString path)
{
    QDir dir(path);
    uint64_t list;
    foreach(QFileInfo file,dir.entryInfoList(QDir::Files))//循环遍历目录下的文件
    {
        list+=file.size();
    }
    foreach(QString sDir,dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot))//NoDotAndDotDot忽略特殊目录,遍历文件夹
    {
        list=list+getDirSize(path+QDir::separator()+sDir);//遇到文件夹后，进入到文件夹下一级，获取这个文件夹的大小然后返回这部分代码递归遍历所有子目录，忽略特殊目录（. 和 ..），并累加每个子目录的大小。
    }

    if(list>1024)
    {
        list/=1024;

    }
   qDebug()<<"目录占据空间为："<<list<<"\t"<<qPrintable(path);
}
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString strpath;
    strpath=QDir::currentPath();
    getDirSize(strpath);


    return a.exec();
}
